perm filename ENVSUB.F4[MUS,LCS] blob sn#063094 filedate 1974-01-08 generic text, type T, neo UTF8
00100	C  SCORE SUBROUTINE TO REPLACE THE LINEN UNIT GENERATOR.
00200	
00300		SUBROUTINE SUBR
00400	 	COMMON /INS/ INST(27),BG(60)
00500		COMMON P(30),INUM,IPAR,CNT(27),BT,PL(48),IREST,DF
00600	
00700		IF(IPAR.EQ.13)GO TO 1
00800		PX9=P(9)
00900	C  SAVE THE DUR. OF TRPT'S ENV.
01000		RETURN
01100	
01200	1	X=PX9
01300		IF(X.GT.10)GO TO 11
01400		P(4)=0
01500		P(7)=3/P(2)
01600	C  THE RISE TIME(IN SEG STEPS) OF ATTACK PORTION.
01700		P(9)=7/P(2)
01800	C  THE DECAY OF ATTACK PEAK.
01900		IF(X.EQ.10)GO TO 10
02000	22	P(11)=100-10/P(2)
02100	C  THE FINAL DECAY. - AFTER THE STEADY STATE PORTION.
02200	C  SO THAT STEPS DON'T GO BACKWARDS
02300		P(12)=0
02400	23	IF(P(11).LT.P(9))P(11)=P(9)
02500		RETURN
02600	
02700	10	P(11)=100-7/PX2
02800	20	P(12)=.3
02900		GO TO 23
03000	
03100	11	P(4)=.3
03200		P(12)=.3
03300		DO 21 K=6,10,2
03400	21	P(K)=.6
03500	C  SETS ALL AMPLS. TO .6 FOR STEADY STATE.
03600	C  USES STEP NUMBERS ALREADY PRESENT
03700		P(7)=7/PX2
03800		P(9)=P(7)
03900		IF(X.EQ.12)GO TO 22
04000		GO TO 10
04100		END
04200	
04300	
04400	
04500	C**** TYPICAL INPUT FOR 'SCORE'
04600	
04700	TRTUN
04800	TEMPO/108*;
04900	TRPT ; DURATION WILL BE DEFINED IN P2
05000	P2 RHY/8/16//8/16 X 6/4/8//2/FINE*;
05100	P3 NOTES/G4///C5//D/C/B4/A/G/BF/A/D5/AF4*;
05200	P4 2000/P5 F1/P10 SUBR;
05300	P9 NUM/1 X 4/10/11//12/1//10/12/1/*;
05400	            ;1=NOTE=ENV. 10=ATTACK NOTE, 11=STEADY, 12=DECAY
05500	P6 .5/P7 6/P8 P3/END;
05600	
05700	ENV INV; USES 'INVISIBLE' FEATURE.
05800	P2 REP; REPEATS P2 OF TRPT
05900	P3 "SEG(F1);"/P7 1/P9 1/P11 1;
06000	P4 0/P5 1/P6 1/P8 .6/P10 .6;
06100	P13 SUBR 100; SEVERAL PARAMS ARE SET IN SUBR.
06200	END;
06300	RUN;
06400	
06500	**** INST. DEFINITION ****
06600	
06700	ARRAY F1,F2(512); <F1 WILL BE DEFINED BY SCORE.
06800	SYNTH(F2);1 1 999;
06900	COMPILE;
07000	INSTRUMENT TRPT; 
07100	OSCIL(P4,MAG/P9,P5);<P9 IS DUR. OF ENV.           
07200	INTRP(P6*P8*MAG,P7*P8*MAG,P5); <P6 AND P7 ARE MOD. INDEX 1 AND 2
07300	COSCIL(U2,P8*MAG,F2); <P8 IS MOD. FREQ.
07400	COSCIL(U1,P3*MAG+U3,F2); 
07500	OUTA←OUTA+U4;END;
07600	FINISH;